#Boa:Frame:Frame1

import wx
import wx.grid
import utiles
import consultasBD
from decimal import Decimal
import os

def create(parent):
    return Frame1(parent)

[wxID_FRAME1, wxID_FRAME1BUTTON1, wxID_FRAME1BUTTON2, wxID_FRAME1BUTTON3, 
 wxID_FRAME1BUTTON4, wxID_FRAME1CHECKBOX1, wxID_FRAME1COMBOBOX1, 
 wxID_FRAME1DATEPICKERCTRL1, wxID_FRAME1DATEPICKERCTRL2, 
 wxID_FRAME1DATEPICKERCTRL3, wxID_FRAME1DATEPICKERCTRL4, 
 wxID_FRAME1DATEPICKERCTRL5, wxID_FRAME1DATEPICKERCTRL6, wxID_FRAME1GRID1, 
 wxID_FRAME1PANEL1, wxID_FRAME1STATICTEXT1, wxID_FRAME1STATICTEXT2, 
 wxID_FRAME1STATICTEXT3, wxID_FRAME1STATICTEXT4, wxID_FRAME1STATICTEXT5, 
 wxID_FRAME1STATICTEXT6, wxID_FRAME1STATICTEXT7, 
] = [wx.NewId() for _init_ctrls in range(22)]

class Frame1(wx.Frame):
    def _init_ctrls(self, prnt):
        # generated method, don't edit
        wx.Frame.__init__(self, id=wxID_FRAME1, name='', parent=prnt,
              pos=wx.Point(313, 40), size=wx.Size(833, 559),
              style=wx.DEFAULT_FRAME_STYLE,
              title='Compras / Ventas en periodos')
        self.SetClientSize(wx.Size(825, 532))

        self.panel1 = wx.Panel(id=wxID_FRAME1PANEL1, name='panel1', parent=self,
              pos=wx.Point(0, 0), size=wx.Size(825, 532),
              style=wx.TAB_TRAVERSAL)

        self.comboBox1 = wx.ComboBox(choices=[], id=wxID_FRAME1COMBOBOX1,
              name='comboBox1', parent=self.panel1, pos=wx.Point(8, 16),
              size=wx.Size(130, 21), style=0, value='')
        self.comboBox1.SetLabel('')
        self.comboBox1.SetEditable(False)

        self.staticText1 = wx.StaticText(id=wxID_FRAME1STATICTEXT1,
              label='COMPRAS', name='staticText1', parent=self.panel1,
              pos=wx.Point(152, 0), size=wx.Size(49, 13), style=0)

        self.datePickerCtrl1 = wx.DatePickerCtrl(id=wxID_FRAME1DATEPICKERCTRL1,
              name='datePickerCtrl1', parent=self.panel1, pos=wx.Point(152, 16),
              size=wx.Size(80, 21), style=wx.DP_DROPDOWN | wx.DP_SHOWCENTURY)

        self.datePickerCtrl2 = wx.DatePickerCtrl(id=wxID_FRAME1DATEPICKERCTRL2,
              name='datePickerCtrl2', parent=self.panel1, pos=wx.Point(232, 16),
              size=wx.Size(80, 21), style=wx.DP_DROPDOWN | wx.DP_SHOWCENTURY)

        self.staticText4 = wx.StaticText(id=wxID_FRAME1STATICTEXT4,
              label='VENTAS (periodo 1)', name='staticText4',
              parent=self.panel1, pos=wx.Point(320, 0), size=wx.Size(95, 13),
              style=0)

        self.datePickerCtrl3 = wx.DatePickerCtrl(id=wxID_FRAME1DATEPICKERCTRL3,
              name='datePickerCtrl3', parent=self.panel1, pos=wx.Point(320, 16),
              size=wx.Size(80, 21), style=wx.DP_DROPDOWN | wx.DP_SHOWCENTURY)

        self.datePickerCtrl4 = wx.DatePickerCtrl(id=wxID_FRAME1DATEPICKERCTRL4,
              name='datePickerCtrl4', parent=self.panel1, pos=wx.Point(400, 16),
              size=wx.Size(80, 21), style=wx.DP_DROPDOWN | wx.DP_SHOWCENTURY)

        self.staticText5 = wx.StaticText(id=wxID_FRAME1STATICTEXT5,
              label='VENTAS (periodo 2)', name='staticText5',
              parent=self.panel1, pos=wx.Point(320, 40), size=wx.Size(95, 13),
              style=0)

        self.datePickerCtrl5 = wx.DatePickerCtrl(id=wxID_FRAME1DATEPICKERCTRL5,
              name='datePickerCtrl5', parent=self.panel1, pos=wx.Point(320, 56),
              size=wx.Size(80, 21), style=wx.DP_DROPDOWN | wx.DP_SHOWCENTURY)

        self.datePickerCtrl6 = wx.DatePickerCtrl(id=wxID_FRAME1DATEPICKERCTRL6,
              name='datePickerCtrl6', parent=self.panel1, pos=wx.Point(400, 56),
              size=wx.Size(80, 21), style=wx.DP_DROPDOWN | wx.DP_SHOWCENTURY)

        self.staticText6 = wx.StaticText(id=wxID_FRAME1STATICTEXT6,
              label='NOTA:', name='staticText6', parent=self.panel1,
              pos=wx.Point(504, 56), size=wx.Size(32, 13), style=0)

        self.button1 = wx.Button(id=wxID_FRAME1BUTTON1, label='Buscar',
              name='button1', parent=self.panel1, pos=wx.Point(504, 16),
              size=wx.Size(75, 23), style=0)
        self.button1.Bind(wx.EVT_BUTTON, self.OnBuscar, id=wxID_FRAME1BUTTON1)

        self.button4 = wx.Button(id=wxID_FRAME1BUTTON4, label='Imprimir',
              name='button4', parent=self.panel1, pos=wx.Point(664, 16),
              size=wx.Size(75, 23), style=0)
        self.button4.Bind(wx.EVT_BUTTON, self.OnImprimir, id=wxID_FRAME1BUTTON4)

        self.button3 = wx.Button(id=wxID_FRAME1BUTTON3, label='Salir',
              name='button3', parent=self.panel1, pos=wx.Point(744, 16),
              size=wx.Size(75, 23), style=0)
        self.button3.Bind(wx.EVT_BUTTON, self.OnSalir, id=wxID_FRAME1BUTTON3)

        self.grid1 = wx.grid.Grid(id=wxID_FRAME1GRID1, name='grid1',
              parent=self.panel1, pos=wx.Point(8, 96), size=wx.Size(808, 432),
              style=0)

        self.staticText2 = wx.StaticText(id=wxID_FRAME1STATICTEXT2,
              label='Sucursal a procesar', name='staticText2',
              parent=self.panel1, pos=wx.Point(8, 0), size=wx.Size(94, 13),
              style=0)

        self.staticText3 = wx.StaticText(id=wxID_FRAME1STATICTEXT3,
              label='En la eleccion de las fechas, debe indicar la',
              name='staticText3', parent=self.panel1, pos=wx.Point(544, 56),
              size=wx.Size(206, 13), style=0)

        self.staticText7 = wx.StaticText(id=wxID_FRAME1STATICTEXT7,
              label='fecha de inicio y la fecha de fin de los periodos.',
              name='staticText7', parent=self.panel1, pos=wx.Point(544, 72),
              size=wx.Size(227, 13), style=0)

        self.button2 = wx.Button(id=wxID_FRAME1BUTTON2, label='Limpiar',
              name='button2', parent=self.panel1, pos=wx.Point(584, 16),
              size=wx.Size(75, 23), style=0)
        self.button2.Bind(wx.EVT_BUTTON, self.OnLimpiar, id=wxID_FRAME1BUTTON2)

        self.checkBox1 = wx.CheckBox(id=wxID_FRAME1CHECKBOX1,
              label='Global (demora)', name='checkBox1', parent=self.panel1,
              pos=wx.Point(8, 40), size=wx.Size(128, 13), style=0)
        self.checkBox1.SetValue(False)
        self.checkBox1.Bind(wx.EVT_CHECKBOX, self.OnCheckBox,
              id=wxID_FRAME1CHECKBOX1)

    def __init__(self, parent):
        self._init_ctrls(parent)
        self.todaslassucursales = False
        self.comboSucursales()
        self.crearGrilla()

    def OnSalir(self, event):
        self.Close()

    def comboSucursales(self):
        sucursal = utiles.getSucursalActiva()
        SQL = "SELECT nombre FROM sucursales WHERE codsucursal='%s'" % (sucursal)
        resultado = consultasBD.ordenCrudaDict(SQL)
        self.comboBox1.SetLabel(resultado[0]["nombre"])
        SQL = "SELECT nombre FROM sucursales"
        resultado = consultasBD.ordenCrudaDict(SQL)
        for item in resultado:
            self.comboBox1.Append(item["nombre"])
        misucursal = int(sucursal)-1
        self.comboBox1.SetLabel(self.comboBox1.GetItems()[misucursal])
        self.comboBox1.SetValue(self.comboBox1.GetItems()[misucursal])
        self.comboBox1.SetSelection(misucursal)
        self.comboBox1.SetEditable(False)

    def autosizegrilla(self):
        for i in xrange(self.grid1.GetNumberCols()):
            self.grid1.AutoSizeColumn(i,True)
        self.grid1.Refresh()

    def crearGrilla(self):
        columnas =['Codigo\nProveedor','Proveedor','COMPRAS\n(items)','COMPRAS\n($ costo)','VENTAS(p1)\n(items)','VENTAS(p1)\n($)','VENTAS(p2)\n(items)','VENTAS(p2)\n($)']
        #ID Proveedor,Proveedor,COMPRAS items,COMPRAS $,VENTAS 1 items,VENTAS 1 $,VENTAS 2 items,VENTAS 2 $
        #0            1         2       3     4         5              6          7              8
        self.grid1.CreateGrid(1,len(columnas))
        for i,col in enumerate(columnas): 
            self.grid1.SetColLabelValue(i, col)
        self.autosizegrilla()
        self.grid1.EnableEditing(False)

    def OnLimpiar(self, event):
        self.grid1.ClearGrid()
        for fila in xrange(self.grid1.GetNumberRows()):
            self.grid1.DeleteRows()
        self.grid1.AppendRows()
        self.comboBox1.SetFocus()

    def verificarFecha(self):
        aux1 = utiles.invertirFecha((self.datePickerCtrl1.GetLabel()).replace("/","-"))
        aux2 = utiles.invertirFecha((self.datePickerCtrl2.GetLabel()).replace("/","-"))
        aux1 = aux1.replace("-","")
        aux2 = aux2.replace("-","")
        if aux2<aux1:
            utiles.mensaje(None,"Error en rango fechas de Compras")
            self.datePickerCtrl1.SetFocus()
            return False
        aux1 = utiles.invertirFecha((self.datePickerCtrl3.GetLabel()).replace("/","-"))
        aux2 = utiles.invertirFecha((self.datePickerCtrl4.GetLabel()).replace("/","-"))
        aux1 = aux1.replace("-","")
        aux2 = aux2.replace("-","")
        if aux2<aux1:
            utiles.mensaje(None,"Error en rango fechas de Compras")
            self.datePickerCtrl1.SetFocus()
            return False
        aux1 = utiles.invertirFecha((self.datePickerCtrl5.GetLabel()).replace("/","-"))
        aux2 = utiles.invertirFecha((self.datePickerCtrl6.GetLabel()).replace("/","-"))
        aux1 = aux1.replace("-","")
        aux2 = aux2.replace("-","")
        if aux2<aux1:
            utiles.mensaje(None,"Error en rango fechas de Compras")
            self.datePickerCtrl1.SetFocus()
            return False
        return True

    def consultaVentas(self,inicio,fin,sucursal=0):
        #las sucursales son el numero de sucursal menos 1
        if not self.todaslassucursales:
            sucursal = self.comboBox1.GetSelection()
        r1 = "SELECT p4.codsussan,SUM(p3.cantidad) AS cantidad,SUM(p3.precioventa) AS precioventa \n"
        r2 = "FROM (SELECT p2.ptc,SUM(p2.cantidad) AS cantidad,SUM(p2.preciofinal) AS precioventa \n"
        r3 = "      FROM \n"
        r4 = "         (SELECT idventa FROM ventas WHERE fecha BETWEEN '"+inicio+"' AND '"+fin+"') AS p1, \n"
        r5 = "         ventastieneproductos AS p2 \n"
        r6 = "      WHERE p1.idventa=p2.idticket GROUP BY p2.ptc) AS p3, \n"
        r7 = "      producto_talle_color AS p4 \n"
        r8 = "WHERE p3.ptc=p4.id \n"
        r9 = "GROUP BY p4.codsussan \n"
        r0 = "ORDER BY p4.codsussan "
        sql = r1+r2+r3+r4+r5+r6+r7+r8+r9+r0
        resultados,conectado = consultasBD.ordenCrudaDictRemota2(sql,sucursal)
        diccionario = {}
        for item in resultados:
            codsussan = item["codsussan"]
            cantidad = item["cantidad"]
            precioventa = item["precioventa"]
            diccionario[codsussan] = (cantidad,precioventa)
        return diccionario

    def consultaCompras(self,inicio,fin):
        r1 = "SELECT p4.codsussan,p5.descri,p4.idproveedor,p6.nombre,p4.cantidad,p4.totalcosto \n"
        r2 = "FROM \n"
        r3 = "  (SELECT p3.codsussan,p3.idproveedor,p3.cantidad,p3.cantidad*p3.costounidad AS totalcosto \n"
        r4 = "  FROM (SELECT p2.codsussan,p1.idproveedor, SUM(p2.cantidad) AS cantidad, p2.costounidad \n"
        r5 = "       FROM (SELECT idfactura,idproveedor FROM compras WHERE fechaingreso BETWEEN '"+inicio+"' AND '"+fin+"') AS p1, \n"
        r6 = "            compras_items AS p2 \n"
        r7 = "       WHERE p1.idfactura = p2.idfactura \n"
        r8 = "       GROUP BY p2.codsussan) AS p3) AS p4, \n"
        r9 = "  productos AS p5, \n"
        r0 = "  proveedor AS p6 \n"
        rA = "WHERE p4.codsussan=p5.codsussan \n"
        rB = "AND p6.idproveedor=p4.idproveedor \n"
        rC = "ORDER BY p6.nombre,p4.codsussan "
        sql = r1+r2+r3+r4+r5+r6+r7+r8+r9+r0+rA+rB+rC
        resultados = consultasBD.ordenCrudaDict(sql)
        return resultados
    
    def OnCheckBox(self, event):
        if self.checkBox1.GetValue():
            self.todaslassucursales = True
            self.comboBox1.Enable(False)
        else:
            self.todaslassucursales = False
            self.comboBox1.Enable(True)
        
    def OnBuscar(self, event):
        if not self.verificarFecha():
            return
        self.OnLimpiar(None)
        
        if self.todaslassucursales:
            periodo1,periodo2 = self.procesoTodasLasSucursales()
        else:
            print "Procesando datos VENTAS Periodo 1"
            inicio = utiles.invertirFecha((self.datePickerCtrl3.GetLabel()).replace("/","-"))+" 00:00:00"
            fin = utiles.invertirFecha((self.datePickerCtrl4.GetLabel()).replace("/","-"))+" 23:59:59"
            periodo1 = self.consultaVentas(inicio,fin)
            print "Procesando datos VENTAS Periodo 2"
            inicio = utiles.invertirFecha((self.datePickerCtrl5.GetLabel()).replace("/","-"))+" 00:00:00"
            fin = utiles.invertirFecha((self.datePickerCtrl6.GetLabel()).replace("/","-"))+" 23:59:59"
            periodo2 = self.consultaVentas(inicio,fin)
        print "Procesando datos COMPRAS"
        inicio = utiles.invertirFecha((self.datePickerCtrl1.GetLabel()).replace("/","-"))+" 00:00:00"
        fin = utiles.invertirFecha((self.datePickerCtrl2.GetLabel()).replace("/","-"))+" 23:59:59"
        compras = self.consultaCompras(inicio,fin)
        try:
            provanterior = compras[0]["idproveedor"]
        except:
            provanterior = ""
        primera = True
        totalcompra = Decimal("0.00")
        comprapesos = Decimal("0.00")
        totalventa1 = Decimal("0.00")
        venta1pesos = Decimal("0.00")
        totalventa2 = Decimal("0.00")
        venta2pesos = Decimal("0.00")
        renglon = 0
        for item in compras:
            idproveedor = item["idproveedor"]
            if not primera:
                if idproveedor != provanterior:
                    #publico linea
                    #ID Proveedor,Proveedor,COMPRAS items,COMPRAS $,VENTAS 1 items,VENTAS 1 $,VENTAS 2 items,VENTAS 2 $
                    #0            1         2             3         4              5          6              7
                    self.grid1.SetCellValue(renglon,0,str(idproveedor))
                    self.grid1.SetCellValue(renglon,1,str(proveedor))
                    self.grid1.SetCellValue(renglon,2,str(totalcompra))
                    self.grid1.SetCellValue(renglon,3,str(comprapesos))
                    self.grid1.SetCellValue(renglon,4,str(totalventa1))
                    self.grid1.SetCellValue(renglon,5,str(venta1pesos))
                    self.grid1.SetCellValue(renglon,6,str(totalventa2))
                    self.grid1.SetCellValue(renglon,7,str(venta2pesos))
                    self.grid1.SetCellAlignment(renglon, 2, wx.ALIGN_RIGHT, wx.ALIGN_CENTRE)
                    self.grid1.SetCellAlignment(renglon, 3, wx.ALIGN_RIGHT, wx.ALIGN_CENTRE)
                    self.grid1.SetCellAlignment(renglon, 4, wx.ALIGN_RIGHT, wx.ALIGN_CENTRE)
                    self.grid1.SetCellAlignment(renglon, 5, wx.ALIGN_RIGHT, wx.ALIGN_CENTRE)
                    self.grid1.SetCellAlignment(renglon, 6, wx.ALIGN_RIGHT, wx.ALIGN_CENTRE)
                    self.grid1.SetCellAlignment(renglon, 7, wx.ALIGN_RIGHT, wx.ALIGN_CENTRE)
                    renglon+= 1
                    self.grid1.AppendRows()
                    provanterior = idproveedor

                    totalcompra = Decimal("0.00")
                    comprapesos = Decimal("0.00")
                    totalventa1 = Decimal("0.00")
                    venta1pesos = Decimal("0.00")
                    totalventa2 = Decimal("0.00")
                    venta2pesos = Decimal("0.00")
            primera = False
            proveedor = item["nombre"]
            codsussan = item["codsussan"]
            descripcion = item["descri"]
            cantidad = item["cantidad"]
            costo = item["totalcosto"]
            try:
                cantidad1,precioventa1 = periodo1[codsussan]
            except:
                cantidad1 = Decimal("0.00")
                precioventa1 = Decimal("0.00")
            try:
                cantidad2,precioventa2 = periodo2[codsussan]
            except:
                cantidad2 = Decimal("0.00")
                precioventa2 = Decimal("0.00")
            totalcompra = totalcompra + cantidad
            comprapesos = comprapesos + costo
            totalventa1 = totalventa1 + cantidad1
            venta1pesos = venta1pesos + precioventa1
            totalventa2 = totalventa2 + cantidad2
            venta2pesos = venta2pesos + precioventa2
        
        self.autosizegrilla()        

    def procesoTodasLasSucursales(self):
        print "procesamiento global"
        inicio1 = utiles.invertirFecha((self.datePickerCtrl3.GetLabel()).replace("/","-"))+" 00:00:00"
        fin1 = utiles.invertirFecha((self.datePickerCtrl4.GetLabel()).replace("/","-"))+" 23:59:59"
        inicio2 = utiles.invertirFecha((self.datePickerCtrl5.GetLabel()).replace("/","-"))+" 00:00:00"
        fin2 = utiles.invertirFecha((self.datePickerCtrl6.GetLabel()).replace("/","-"))+" 23:59:59"
        print "Sucursal: Casa Central - periodo 1"
        periodo11 = self.consultaVentas(inicio1,fin1,0)
        print "Sucursal: Casa Central - periodo 2"
        periodo12 = self.consultaVentas(inicio2,fin2,0)
        print "Sucursal: Parana       - periodo 1"
        periodo21 = self.consultaVentas(inicio1,fin1,1)
        print "Sucursal: Parana       - periodo 2"
        periodo22 = self.consultaVentas(inicio2,fin2,1)
        print "Sucursal: Saska        - periodo 1"
        periodo31 = self.consultaVentas(inicio1,fin1,2)
        print "Sucursal: Saska        - periodo 2"
        periodo32 = self.consultaVentas(inicio2,fin2,2)
        print "Sucursal: Peatonal     - periodo 1"
        periodo41 = self.consultaVentas(inicio1,fin1,3)
        print "Sucursal: Peatonal     - periodo 2"
        periodo42 = self.consultaVentas(inicio2,fin2,3)
        codsussan1 = []
        codsussan2 = []
        for item in periodo11: codsussan1.append(item)
        for item in periodo12: codsussan2.append(item)
        for item in periodo21: codsussan1.append(item)
        for item in periodo22: codsussan2.append(item)
        for item in periodo31: codsussan1.append(item)
        for item in periodo32: codsussan2.append(item)
        for item in periodo41: codsussan1.append(item)
        for item in periodo42: codsussan2.append(item)
        aux = set(codsussan1)
        codsussan1 = list(aux)
        aux = set(codsussan2)
        codsussan2 = list(aux)
        periodo1 = {}
        for codsussan in codsussan1:
            try:
                cantidad1,pventa1 = periodo11[codsussan]
            except:
                cantidad1 = Decimal("0.00")
                pventa1 = Decimal("0.00")
            try:
                cantidad2,pventa2 = periodo21[codsussan]
            except:
                cantidad2 = Decimal("0.00")
                pventa2 = Decimal("0.00")
            try:
                cantidad3,pventa3 = periodo31[codsussan]
            except:
                cantidad3 = Decimal("0.00")
                pventa3 = Decimal("0.00")
            try:
                cantidad4,pventa4 = periodo41[codsussan]
            except:
                cantidad4 = Decimal("0.00")
                pventa4 = Decimal("0.00")
            cantidad = cantidad1+cantidad2+cantidad3+cantidad4
            pventa = pventa1+pventa2+pventa3+pventa4
            periodo1[codsussan]=(cantidad,pventa)
        periodo2 = {}
        for codsussan in codsussan2:
            try:
                cantidad1,pventa1 = periodo12[codsussan]
            except:
                cantidad1 = Decimal("0.00")
                pventa1 = Decimal("0.00")
            try:
                cantidad2,pventa2 = periodo22[codsussan]
            except:
                cantidad2 = Decimal("0.00")
                pventa2 = Decimal("0.00")
            try:
                cantidad3,pventa3 = periodo32[codsussan]
            except:
                cantidad3 = Decimal("0.00")
                pventa3 = Decimal("0.00")
            try:
                cantidad4,pventa4 = periodo42[codsussan]
            except:
                cantidad4 = Decimal("0.00")
                pventa4 = Decimal("0.00")
            cantidad = cantidad1+cantidad2+cantidad3+cantidad4
            pventa = pventa1+pventa2+pventa3+pventa4
            periodo2[codsussan]=(cantidad,pventa)
        return periodo1,periodo2

    def OnImprimir(self, event):
        print "Imprimiendo"
        f=open("c:\\matrisamor.doc\\reporte-StockComprasVentas.html","w")
        numeroPagina = 1
        nrosuc,nombresuc = utiles.datosSucursal()
        
        #ID Proveedor,Proveedor,COMPRAS items,COMPRAS $,VENTAS 1 items,VENTAS 1 $,VENTAS 2 items,VENTAS 2 $
        #0            1         2             3         4              5          6              7
        totalItemPorPagina = 55
        totalPaginas = int(self.grid1.GetNumberRows()-1) / totalItemPorPagina 
        totalPaginas+= 1

        def encabezadoPagina(texto):
            fecha = utiles.getfechaTime()
            sucursal = self.comboBox1.GetLabel()
            if self.checkBox1.GetValue():
                sucursal = "TODAS"
            a = '<table width="100%" cellspacing="0" border="0">\n'
            a+= '<tr>\n'
            a+= '<td valign="center" align="left" width="33%">'
            a+= 'SUSSAN BOUTIQUE<br>Comparaci&oacute;n Compras/Ventas por per&iacute;odos '
            a+= '<br>Sucursal: '+sucursal
            a+= '<br></td>\n<td valign="center" align="left" width="34%">'
            a+= '<br>'
            a+= '</td>\n'
            a+= '<td valign="center" align="right" width="33%">'+fecha
            a+= '<br>P&aacute;gina '+str(numeroPagina)+' / '+str(totalPaginas)+'</td>\n'
            a+= '</tr>\n'
            a+= '</table>\n'
            
            texto+= a
            return texto
        
        def encabezadoTabla(texto):
        #ID Proveedor,Proveedor,COMPRAS items,COMPRAS $,VENTAS 1 items,VENTAS 1 $,VENTAS 2 items,VENTAS 2 $
        #0            1         2             3         4              5          6              7
            a = '<hr>'

            tama = '"0.05"'
            a+= '<table width="100%" cellspacing="1" border="0"> \n'
            a+= '<tr>\n'
            a+= '<td valign="top" align="right"><font size='+tama+'>Orden</font></td> \n'
            a+= '<td valign="top" align="right"><font size='+tama+'>C&oacute;digo</font></td> \n'
            a+= '<td valign="top" align="left"><font size='+tama+'>Nombre</font></td> \n'
            a+= '<td valign="top" align="center" colspan="2"><font size='+tama+'>COMPRAS '+fechaCompra1+' - '+fechaCompra2+'</font></td> \n'
            a+= '<td valign="top" align="center" colspan="2"><font size='+tama+'>VENTAS '+fechaVenta1+' - '+fechaVenta2+'</font></td> \n'
            a+= '<td valign="top" align="center" colspan="2"><font size='+tama+'>VENTAS '+fechaVenta3+' - '+fechaVenta4+'</font></td> \n'
            a+= '</tr> \n'
            a+= '<tr>\n'
            a+= '<td valign="top" align="right"><font size='+tama+'></font></td> \n'
            a+= '<td valign="top" align="right"><font size='+tama+'>Proveedor</font></td> \n'
            a+= '<td valign="top" align="left"><font size='+tama+'></font></td> \n'
            a+= '<td valign="top" align="right"><font size='+tama+'>items</font></td> \n'
            a+= '<td valign="top" align="right"><font size='+tama+'>$ costo</font></td> \n'
            a+= '<td valign="top" align="right"><font size='+tama+'>items</font></td> \n'
            a+= '<td valign="top" align="right"><font size='+tama+'>$</font></td> \n'
            a+= '<td valign="top" align="right"><font size='+tama+'>items</font></td> \n'
            a+= '<td valign="top" align="right"><font size='+tama+'>$</font></td> \n'
            a+= '</tr> \n'
#            a+= '</table>\n'
            a+= '<tr>\n'
            a+= '<td colspan="9"><hr></td>\n'
            a+= '</tr>\n'
            texto+= a
            return texto
        
        fechaCompra1 = self.datePickerCtrl1.GetLabel()
        fechaCompra2 = self.datePickerCtrl2.GetLabel()
        fechaVenta1 = self.datePickerCtrl3.GetLabel()
        fechaVenta2 = self.datePickerCtrl4.GetLabel()
        fechaVenta3 = self.datePickerCtrl5.GetLabel()
        fechaVenta4 = self.datePickerCtrl6.GetLabel()

        cadena = '<?xml version="1.0" encoding="utf-8" ?> \n'
        cadena+= '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> \n'
        cadena+= '<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> \n'
        cadena+= '<head> \n'
        cadena+= '<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> \n'
        cadena+= '<meta name="generator" content="Docutils 0.4.1: http://docutils.sourceforge.net/" /> \n'
        cadena+= '<title>Sussan Boutique</title> \n'
        cadena+= '</head> \n'
        cadena+= '<body> \n'

        cadena = encabezadoPagina(cadena)
        cadena = encabezadoTabla(cadena)
        f.write(cadena)

        renglon = 0
        for i in xrange(self.grid1.GetNumberRows()-1):
        #ID Proveedor,Proveedor,COMPRAS items,COMPRAS $,VENTAS 1 items,VENTAS 1 $,VENTAS 2 items,VENTAS 2 $
        #0            1         2             3         4              5          6              7
            orden = str(i+1)
            idproveedor = self.grid1.GetCellValue(i,0)
            proveedor = self.grid1.GetCellValue(i,1)
            comprasitems = self.grid1.GetCellValue(i,2)
            compraspesos = self.grid1.GetCellValue(i,3)
            ventas1items = self.grid1.GetCellValue(i,4)
            ventas1pesos = self.grid1.GetCellValue(i,5)
            ventas2items = self.grid1.GetCellValue(i,6)
            ventas2pesos = self.grid1.GetCellValue(i,7)
            
            tama = '"0.2"'
            cadena = '<tr> \n'
            cadena+= '<td valign="top" align="right"><font size='+tama+'>'+orden+'</font></td> \n'
            cadena+= '<td valign="top" align="right"><font size='+tama+'>'+idproveedor+'</font></td> \n'
            cadena+= '<td valign="top" align="left"><font size='+tama+'>'+proveedor+'</font></td> \n'
            cadena+= '<td valign="top" align="right"><font size='+tama+'>'+comprasitems+'</font></td> \n'
            cadena+= '<td valign="top" align="right"><font size='+tama+'>'+compraspesos+'</font></td> \n'
            cadena+= '<td valign="top" align="right"><font size='+tama+'>'+ventas1items+'</font></td> \n'
            cadena+= '<td valign="top" align="right"><font size='+tama+'>'+ventas1pesos+'</font></td> \n'
            cadena+= '<td valign="top" align="right"><font size='+tama+'>'+ventas2items+'</font></td> \n'
            cadena+= '<td valign="top" align="right"><font size='+tama+'>'+ventas2pesos+'</font></td> \n'
            cadena+= '</tr>\n'
            f.write(cadena)
            
            renglon+= 1
            
            if renglon == totalItemPorPagina :
                renglon = 0
                numeroPagina+= 1
                cadena = encabezadoPagina("")
                cadena = encabezadoTabla(cadena)
                f.write(cadena)

        tama = '"0.2"'
            
        cadena = '</table>\n'
        f.write(cadena)
        f.close()

        import os
        os.system("taskkill /IM firefox.exe /F")
        os.system("c:\\explorer.lnk c:\\matrisamor.doc\\reporte-StockComprasVentas.html")
        
